package com.xbongbong.pro.sms.model;

import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.saas.domain.entity.SmsStatusEntity;

import java.util.List;
import java.util.Map;

/**
 * @description:
 * @Author: hongxiao
 * @date: 2019-01-12 17:42
 */
public interface SmsStatusModel extends IModel<SmsStatusEntity> {

    Integer save(SmsStatusEntity entity);


    Integer deleteByKey(Long key, String corpid);

    SmsStatusEntity getByKey(Long key, String corpid);

    /**
     * 根据短信编号获取短信记录
     * @param msgId 短信编号
     * @return
     */
    SmsStatusEntity getByMsgId(String msgId);

    /**
     * 根据idIn获取短信列表
     * @param param
     * @return
     */
    List<SmsStatusEntity> getByIdIn(Map<String, Object> param);

    /**
     * 批量更新短信记录状态
     * @param param
     * @return
     */
    Integer updateBatchForStatus(Map<String, Object> param);

    void updateBatch(List<SmsStatusEntity> list);

    /**
     * 批量插入数据
     * @param list 短信记录列表
     * @return
     */
    Integer insertBatch(List<SmsStatusEntity> list);

    /**
     * 批量取消短信记录
     * @param param
     * @return
     */
    Integer cancelByIdIn(Map<String, Object> param);

    /**
     * 根据短信状态获取短信状态数量
     * @param param 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-01-25 20:48
     * @since v1.0
     * @version v1.0
     */
    List<Map<String, Object>> getCountByStatusIn(Map<String, Object> param);

    /**
     * @Description: 营销回调处理
     * @param ret 回调返回数据
     * @param entity 回调的短信实体
     * 创建时间： 很早以前
     * 修改时间： 2018-1-2 下午4:19:18 chy
     * @author
     * @since 很早以前
     * @version v3.15.1
     */
//    void dealStringRet(String ret,SmsStatusEntity entity);


    /**
     * 工单完成后，发送短信 评价邀请
     * @param userEntity 当前用户
     * @param type 类型，0即时发送，1定时发送
     * @param workOrder 工单实体
     * @since 3.13
     * @version 3.13
     * @author zheng.li
     * @time 2017-12-29 上午10:52:27
     * @updateTime 2017-12-29 上午10:52:27
     */
//    void sendSmsForWorkOrder (UserEntity userEntity, WorkOrderEntity workOrder, WorkflowNodeEntity workflowNodeEntity);

}
